package com.itheima.api.integer.demo04;

import java.util.Arrays;

public class IntegerDemo01 {

    public static void main(String[] args) {

        /**
         * 练习题：
         * 需求：有一个字符串："91 27 46 38 50"，请写程序实现最终输出结果是："27 38 46 50 91"
         *
         * 分析： 我们现在需要的这个结果字符串，这个字符串中的数字有顺序的。假设我们现在已经存在了一个数组，数组的元素都是有序的
         * 那么我们可不可以得到这个字符串呢？可以； 但是我们的已知的条件是一个字符串("91 27 46 38 50"),那么我们只需要将这个
         * 字符串转换成数组。 字符串如何转换成数组？public String[] split​(String regex); 但是我们通过这个split方法得到的
         * 是一个字符串数组，而我们的目标需要的是一个int类型的数据，那么我们如何把一个字符串数组转换成int类型的数组呢？
         *
         * 把数据类型做一个转换就可以了： String ---> int          我们可以对其数组进行排序 ， 遍历这个数组获取每一个元素
         * 做字符串的拼接操作
         *
         * 步骤:
         * 1. 定义字符串变量： String s = "91 27 46 38 50" ;
         * 2. 调用字符串的public String[] split​(String regex),按照空格进行切割；得到的就是一个字符串数组
         * 3. 把这个字符串数组转换成int类型的数组
         * 4. 对int类型的数组进行排序操作
         * 5. 遍历这个int类型的数组，做字符串拼接(StringBuilder)
         *
         */
        // 1. 定义字符串变量： String s = "91 27 46 38 50" ;
        String s = "91 27 46 38 50" ;

        // 2. 调用字符串的public String[] split​(String regex),按照空格进行切割；得到的就是一个字符串数组
        String[] strArr = s.split(" ") ;

        // 3. 把这个字符串数组转换成int类型的数组
        // 思路：定义一个int类型的数组，然后去遍历字符串数组，获取每一个元素，然后将这个元素转换成int类型的值；存储到int类型的数组中
        // 3.1 定义一个int类型的数组
        int[] arr = new int[strArr.length] ;

        // 3.2 然后去遍历字符串数组
        for(int x = 0 ; x < strArr.length ; x++) {

            // 获取每一个元素
            String s1 = strArr[x] ;

            // 将这个元素转换成int类型的值
            int i = Integer.parseInt(s1);

            // 存储到int类型的数组中
            arr[x] =  i ;
        }

        // 对int类型的数组进行排序操作
        Arrays.sort(arr);

        // 遍历这个int类型的数组，做字符串拼接(StringBuilder)
        StringBuilder sb = new StringBuilder() ;
        for(int x = 0 ; x < arr.length ; x++) {

            // "27 38 46 50 91"
            if(x == arr.length - 1) {       // 最后一个元素
                sb.append(arr[x]);
            }else {
                sb.append(arr[x]).append(" ") ;
            }

        }

        // 得到结果，从StringBuilder中获取字符串
        String result = sb.toString() ;

        // 输出
        System.out.println(result);


    }

}
